home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 October
/
EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso
/
Enigma Amiga CD
/
Listati
/
60-Gennaio-esempio2.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-02
|
2KB
|
48 lines
/**************************************************************************
* Esempio 2 *
* Aggiunge un interrupt alla lista dei servers per l'interruzione al *
* vertical blank; l'interrupt incrementa semplicemente la variabil il cui *
* indirizzo e' presente in is_Data *
**************************************************************************/
/* inclusione file di supporto */
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/interrupts.h>
#include <dos.h>
#include <hardware/custom.h>
#include <hardware/intbits.h>
#include <clib/exec_protos.h>
#include <clib/alib_protos.h>
/* prototipo della funzione di interrupt */
void VertBServer();
void main()
{
struct Interrupt *vertblankint;
ULONG cont = 0;
if ((vertblankint = (struct Interrupt *)AllocMem(sizeof(struct Interrupt),MEMF_CLEAR|MEMF_PUBLIC)) == NULL)
{
printf("Non posso allocare memoria.\n");
exit(0);
}
/* preparazione struttura Interrupt */
vertblankint -> is_Node.ln_Type = NT_INTERRUPT;
vertblankint -> is_Node.ln_Pri = 0;
vertblankint -> is_Node.ln_Name = "esempio2_vbint";
vertblankint -> is_Data = (APTR)&cont;
vertblankint -> is_Code = VertBServer;
/* inserimento dell'interrupt */
AddIntServer(INTB_VERTB,vertblankint);
printf("Conteggio quadri video; premere CTRL C per finire.\n");
Wait(SIGBREAKF_CTRL_C);
printf("Numero vertical blank - %ld\n",cont);
/* rimozione dell'interrupt */
RemIntServer(INTB_VERTB,vertblankint);
FreeMem(vertblankint,sizeof(struct Interrupt));
}